package com.nulldev.util.security.encryptAPI_rw.api;

import com.nulldev.util.data.Variables;
import com.nulldev.util.data.Sets.DataSet;

public interface IPKPKKeyGenerator {

	public static class PKPKSet {
		private final byte[] privateKey, publicKey;

		public PKPKSet(final byte[] privateKey, final byte[] publicKey) {
			this.privateKey = Variables.requireNonNullObject(privateKey, "privateKey");
			this.publicKey = Variables.requireNonNullObject(publicKey, "publicKey");
		}

		public byte[] getPrivateKey() {
			return this.privateKey;
		}

		public byte[] getPublicKey() {
			return this.publicKey;
		}
	}

	public PKPKSet makeKey(final int keySize);

	public default DataSet<Object, Object> makeNativeKey(final int keySize) {
		throw new UnsupportedOperationException("makeNativeKey is NOT supported by this implementation!");
	}
}
